<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BHandler</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BHandler">
			<h1>BHandler</h1>
			<p>继承自<a href="BObject.html">BObject</a></p>
			<p id="resume"><a href="#desc">详细</a></p>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right"/><td><a href="#BHandler(BHandler*)">BHandler</a>(BHandler* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#BHandler(const BString&,BHandler*)">BHandler</a>(const BString&amp; name, BHandler* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#~BHandler()">~BHandler</a>();</td></tr>
				<tr><td align="right">BViewer* </td><td><a href="#viewer()">viewer</a>() const;</td></tr>
				<tr><td align="right">BCamera* </td><td><a href="#camera()">camera</a>() const;</td></tr>
				<tr><td align="right">BScene* </td><td><a href="#scene()">scene</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#fresh()">fresh</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setParent(BHandler*)">setParent</a>(BHandler* parent);</td></tr>
				<tr><td align="right">const BHandler* </td><td><a href="#parent()">parent</a>() const;</td></tr>
				<tr><td align="right">BHandler* </td><td><a href="#parent()">parent</a>();</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#addChild(BHandler*)">addChild</a>(BHandler* child);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#insertChild(int, BHandler*)">insertChild</a>(int pos, BHandler* child);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#removeChild(BHandler*)">removeChild</a>(BHandler* child);</td></tr>
				<tr><td align="right">void </td><td><a href="#clearChildren()">clearChildren</a>();</td></tr>
				<tr><td align="right">int </td><td><a href="#childCount()">childCount</a>() const;</td></tr>
				<tr><td align="right">BHandler* </td><td><a href="#child(int)">child</a>(int index) const;</td></tr>
				<tr><td align="right">BHandler* </td><td><a href="#child(const BString&)">child</a>(const BString&amp; name) const;</td></tr>
				<tr><td align="right">int </td><td><a href="#index()">index</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#above(const BHandler*)">above</a>(const BHandler* other) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#under(const BHandler*)">under</a>(const BHandler* other) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#contain(BHandler*)">contain</a>(BHandler* child);</td></tr>
				<tr><td align="right">bool </td><td><a href="#contain(const BString&)">contain</a>(const BString&amp; name) const;</td></tr>
				<tr><td align="right">void </td><td><a href="#raise()">raise</a>();</td></tr>
				<tr><td align="right">void </td><td><a href="#lower()">lower</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#detach()">detach</a>();</td></tr>
			</table>
			<h2>protected</h2>
			<table id="protected">
				<tr><td align="right">virtual void </td><td><a href="#attached(BViewer*)">attached</a>(BViewer* viewer);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#detached(BViewer*)">detached</a>(BViewer* viewer);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#paint(BPainter&)">paint</a>(BPainter&amp; painter);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#render(BRender&)">render</a>(BRender&amp; render);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#event(const BEvent&)">event</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#updateEvent(const BEvent&)">updateEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#styleEvent(const BEvent&)">styleEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#freshEvent(const BEvent&)">freshEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#moveEvent(const BEvent&)">moveEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#resizeEvent(const BEvent&)">resizeEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#focusEvent(const BEvent&)">focusEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#keyPressEvent(const BKeyEvent&)">keyPressEvent</a>(const BKeyEvent&amp; keyEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#keyReleaseEvent(const BKeyEvent&)">keyReleaseEvent</a>(const BKeyEvent&amp; keyEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseEnterEvent(const BMouseEvent&)">mouseEnterEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseLeaveEvent(const BMouseEvent&)">mouseLeaveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mousePressEvent(const BMouseEvent&)">mousePressEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseReleaseEvent(const BMouseEvent&)">mouseReleaseEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseMoveEvent(const BMouseEvent&)">mouseMoveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseWheelEvent(const BMouseEvent&)">mouseWheelEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseClickEvent(const BMouseEvent&)">mouseClickEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseDoubleClickEvent(const BMouseEvent&)">mouseDoubleClickEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#dragEnterEvent(const BMouseEvent&)">dragEnterEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#dragLeaveEvent(const BMouseEvent&)">dragLeaveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#dragMoveEvent(const BMouseEvent&)">dragMoveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#dragDropEvent(const BMouseEvent&)">dragDropEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>
					BHandler是操控类，在BViewer中被使用，通过优先响应BViewer的各个事件从而对场景视图相关的对象进行操作，如摄像机操控。通过其方法paint()和render()进行二维和三维的绘制。
				</p>
				<p>除了摄像机的操控，BHandler还常被继承以用于特定场景操作行为，如拖动物体，编辑形状等等。</p>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BHandler(BHandler*)">
				<h3>BHandler(BHandler* parent = 0);</h3>
			</div>
			<div id="BHandler(const BString&,BHandler*)">
				<h3>BHandler(const BString&amp; name, BHandler* parent = 0);</h3>
			</div>
			<div id="~BHandler()">
				<h3>~BHandler();</h3>
				<p>Destroys the handler.</p>
			</div>
			<div id="viewer()">
				<h3>BViewer* viewer() const;</h3>
				<p>Get the viewer attached of this handler.</p>
			</div>
			<div id="camera()">
				<h3>BCamera* camera() const;</h3>
				<p>Get the camera attached of this handler, it is attached by BViewer::setCamera();</p>
			</div>
			<div id="scene()">
				<h3>BScene* scene() const;</h3>
				<p>获得此操控器关联的视图（BViewer）中的场景对象，场景是通过方法BViewer::setScene()进行设置的。</p>
			</div>
			<div id="fresh()">
				<h3>bool fresh() const;</h3>
				<p>此方法相当于对其关联的BViewer调用fresh()功能，使用视图重新绘制。</p>
			</div>
			<div id="setParent(BHandler*)">
				<h3>void setParent(BHandler* parent);</h3>
			</div>
			<div id="parent()">
				<h3>const BHandler* parent() const;</h3>
			</div>
			<div id="parent()">
				<h3>BHandler* parent();</h3>
			</div>
			<div id="addChild(BHandler*)">
				<h3>virtual void addChild(BHandler* child);</h3>
			</div>
			<div id="insertChild(int, BHandler*)">
				<h3>virtual void insertChild(int pos, BHandler* child);</h3>
			</div>
			<div id="removeChild(BHandler*)">
				<h3>virtual void removeChild(BHandler* child);</h3>
			</div>
			<div id="clearChildren()">
				<h3>void clearChildren();</h3>
			</div>
			<div id="childCount()">
				<h3>int childCount() const;</h3>
			</div>
			<div id="child(int)">
				<h3>BHandler* child(int index) const;</h3>
			</div>
			<div id="child(const BString&)">
				<h3>BHandler* child(const BString&amp; name) const;</h3>
			</div>
			<div id="index()">
				<h3>int index() const;</h3>
			</div>
			<div id="above(const BHandler*)">
				<h3>bool above(const BHandler* other) const;</h3>
			</div>
			<div id="under(const BHandler*)">
				<h3>bool under(const BHandler* other) const;</h3>
			</div>
			<div id="contain(BHandler*)">
				<h3>bool contain(BHandler* child);</h3>
			</div>
			<div id="contain(const BString&)">
				<h3>bool contain(const BString&amp; name) const;</h3>
			</div>
			<div id="raise()">
				<h3>void raise();</h3>
				<p>Move this handler to the first position of parent's slave handlers list.</p>
			</div>
			<div id="lower()">
				<h3>void lower();</h3>
				<p>Move this handler to the last position of master's slaves list.</p>
			</div>
			<div id="detach()">
				<h3>bool detach();</h3>
			</div>
			<div id="attached(BViewer*)">
				<h3>virtual void attached(BViewer* viewer);</h3>
			</div>
			<div id="detached(BViewer*)">
				<h3>virtual void detached(BViewer* viewer);</h3>
			</div>
			<div id="paint(BPainter&)">
				<h3>virtual void paint(BPainter&amp; painter);</h3>
				<p>Every time the viewer painted, this will be called, painter is passed by BViewer::paintEvent().</p>
			</div>
			<div id="render(BRender&)">
				<h3>virtual void render(BRender&amp; render);</h3>
				<p>Every time the camera of viewer freshed, this will be called.</p>
			</div>
			<div id="event(const BEvent&)">
				<h3>virtual void event(const BEvent&amp; event);</h3>
				<p>This method will catch all event coming to viewer, you can reimplemented this to process them.</p>
			</div>
			<div id="updateEvent(const BEvent&)">
				<h3>virtual void updateEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="styleEvent(const BEvent&)">
				<h3>virtual void styleEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="freshEvent(const BEvent&)">
				<h3>virtual void freshEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="moveEvent(const BEvent&)">
				<h3>virtual void moveEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="resizeEvent(const BEvent&)">
				<h3>virtual void resizeEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="focusEvent(const BEvent&)">
				<h3>virtual void focusEvent(const BEvent&amp; event);</h3>
			</div>
			<div id="keyPressEvent(const BKeyEvent&)">
				<h3>virtual void keyPressEvent(const BKeyEvent&amp; keyEvent);</h3>
			</div>
			<div id="keyReleaseEvent(const BKeyEvent&)">
				<h3>virtual void keyReleaseEvent(const BKeyEvent&amp; keyEvent);</h3>
			</div>
			<div id="mouseEnterEvent(const BMouseEvent&)">
				<h3>virtual void mouseEnterEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseLeaveEvent(const BMouseEvent&)">
				<h3>virtual void mouseLeaveEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mousePressEvent(const BMouseEvent&)">
				<h3>virtual void mousePressEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseReleaseEvent(const BMouseEvent&)">
				<h3>virtual void mouseReleaseEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseMoveEvent(const BMouseEvent&)">
				<h3>virtual void mouseMoveEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseWheelEvent(const BMouseEvent&)">
				<h3>virtual void mouseWheelEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseClickEvent(const BMouseEvent&)">
				<h3>virtual void mouseClickEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseDoubleClickEvent(const BMouseEvent&)">
				<h3>virtual void mouseDoubleClickEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="dragEnterEvent(const BMouseEvent&)">
				<h3>virtual void dragEnterEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="dragLeaveEvent(const BMouseEvent&)">
				<h3>virtual void dragLeaveEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="dragMoveEvent(const BMouseEvent&)">
				<h3>virtual void dragMoveEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="dragDropEvent(const BMouseEvent&)">
				<h3>virtual void dragDropEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
		</div>
	</body>
</html>